package org.linlinjava.litemall.db.dao;

import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.linlinjava.litemall.db.domain.LitemallOrder;
import org.linlinjava.litemall.db.domain.LitemallOrderExample;

public interface LitemallOrderMapper {
    long countByExample(LitemallOrderExample example);

    int deleteByExample(LitemallOrderExample example);

    int deleteByPrimaryKey(Integer id);

    int insert(LitemallOrder record);

    int insertSelective(LitemallOrder record);

    List<LitemallOrder> selectByExample(LitemallOrderExample example);

    LitemallOrder selectByPrimaryKey(Integer id);

    int updateByExampleSelective(@Param("record") LitemallOrder record, @Param("example") LitemallOrderExample example);

    int updateByExample(@Param("record") LitemallOrder record, @Param("example") LitemallOrderExample example);

    int updateByPrimaryKeySelective(LitemallOrder record);

    int updateByPrimaryKey(LitemallOrder record);

    List<LitemallOrder> selectByExampleSelective(@Param("example") LitemallOrderExample example, @Param("selective") LitemallOrder.Column ... selective);

    LitemallOrder selectByOrderSn(@Param("OrderSn")String OrderSn);

    int updateWithOptimisticLocker(@Param("lastUpdateTime") Date lastUpdateTime, @Param("order") LitemallOrder order);

    int logicalDeleteByPrimaryKey(Integer id);

    int updateStatus(@Param("orderStatus") Integer status, @Param("payType") Integer payType, @Param("orderNo") String orderNo);

}